#ifndef _FUNCTION2_
#define _FUNCTION2_

#include <math.h>
#ifndef pi
#define pi 4.0 * atan(1.0)
#endif

double f(double *p)
{
    return 2 * pi * pi * sin(pi * p[0]) * sin(pi * p[1]);
}

double bc(double *p)
{
    return sin(pi * p[0]) * sin(pi * p[1]);
}

double f2(double *p)
{
    return 2 * pi * pi * cos(pi * p[0]) * cos(pi * p[1]);
}

double bc2(double *p)
{
    return cos(pi * p[0]) * cos(pi * p[1]);
}
double a(double *p)
{
    return 1;
}
double g1(double *p)
{
    return exp(p[0] - 1.0);
}
double g2(double *p)
{
    return exp(1.0 + p[1]);
}
double g3(double *p)
{
    return exp(p[0] + 1.0);
}
double g4(double *p)
{
    return exp(-1.0 + p[1]);
}
double u(double *p)
{
    return exp(p[0] + p[1]);
}
double fe(double *p)
{
    return -2 * exp(p[0] + p[1]);
}

#else
#endif